package com.zhixue.media.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zhixue.media.model.po.MediaProcess;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author Dragon
 * @since 2023-09-25
 */
public interface MediaProcessService extends IService<MediaProcess> {

    /**
     * 根据分片参数获取待处理任务
     * @param shardTotal  分片总数
     * @param shardIndex  分片序号
     * @param count  任务数
     * @return
     */
    List<MediaProcess> selectListByShardIndex(@Param("shardTotal") int shardTotal, @Param("shardIndex") int shardIndex, @Param("count") int count);
    //QueryWrapper<MediaProcess> queryWrapper = new QueryWrapper<>();
    //    queryWrapper.apply("id % {0} = {1}", shardTotal, shardIndex)
    //                .and(wrapper -> wrapper.eq("status", "1").or().eq("status", "3"))
    //                .lt("fail_count", 3)
    //                .last("limit " + count);
    //    return mediaProcessMapper.selectList(queryWrapper);


    /**
     * 开启一个任务
     * @param id 任务id
     * @return 更新记录数
     */
    boolean startTask(@Param("id") long id);


    /**
     *  更新任务结果
     * @param taskId  任务id
     * @param status 任务状态
     * @param fileId  文件id
     * @param url url
     * @param errorMsg 错误信息
     * @return void
     */
    void saveProcessFinishStatus(Long taskId,String status,String fileId,String url,String errorMsg);



}
